<?PHP
class Forums {
	// Lien avec le modèle
	private $m;
	// Lien avec le template
	private $t;
	// Description de la classe
	public $description = "Les forums de discussions";
	
	/**
	* Appel de la classe ; mise en relation avec le modèle
	**/
	public function __construct() {
		// On charge le modèle
		require("models/forums.php");
		$this->m = new Forum;
		// On charge le template
		require("../../main/tpl/gaga.class.php");
		$this->t = new gagatemplate;
	}
	
	/**
	* Module pour l'accueil
	**/
	public function block() {
		// On charge la vue
		include("views/forums/block.php");
	}
	
	/**
	* Liste des forums en guise d'accueil
	**/
	public function accueil() {
		// On récupère la liste des forums
		$l = $this->m->listeForums2();
		// On injecte tout ça dans les templates
		foreach ($l as $id => $c) {
			$this->t->assign_array('cat', $c);
			foreach ($c['frms'] as $f) {
				if ($f['view'] == 1)
					$this->t->assign_array('cat.frm', $f);
			}
		}
		
		// Record de connectés
		$record = explode(',', filegetcontents("cache/ses_record.dat"));
		$record[0] = date("\l\e d/M/Y \à H\hi", $record[0]);
		$this->t->assign(array("record" => $record));
		unset($record);
		
		// On inclut la vue
		includev($this->t, "views/forums/accueil.tpl");
	}
	
	/**
	* Liste des topics
	**/
	public function liste() {
		// On récupère les permissions
		$p = $this->m->listerPermissions($_SESSION['groupe_id'], $_GET['id']);
		// On récupères les sujets si on a le droit
		if ($p['voir'] == 1)
			$l = $this->m->listeSujets(intval($_GET['id']));
		else {
			msg("erreur", "Vous n'avez pas le droit de voir le contenu de ce forum, désolé.");
			redirect("/forums/");
		}
		// THE VIEW !!!
		include("views/forums/liste.php");
	}
	
	/**
	* Liste des messages d'une discussion
	**/
	public function discussion() {
		// On récupère les messages du topic
		$l = $this->m->listeMessages();
		// On demande la permission
		$p = $this->m->listerPermissions($_SESSION['groupe_id'], $l[0]['frm_id']);
		if ($p['lire'] == 1) {
			// La vue
			include("views/forums/discussion.php");
		}
		else {
			msg("erreur", "Vous n'avez pas le droit de lire cette discussion.");
			redirect($_SERVER['HTTP_REFERER']);
		}
	}
	
	/**
	* Ajouter un nouveau topic
	**/
	public function nouveau() {
		// On récupère les permissions
		$p = $this->m->listerPermissions($_SESSION['groupe_id'], $_GET['id']);
		// Si on a le droit
		if ($p['nouveau'] == 1) {
			// Si on a posté
			if (!empty($_POST)) {
				// On crée le sujet
				$s = $this->m->ajouterSujet();
				// On insère le msg
				$this->m->ajouterMessage($s);
				// Over !
				msg("ok", "Votre discussion a bien été créée.");
				// Par ici mon seigneur
				redirect("/forums/discussion/".$s.':'.$_POST['sjt_titre']);
			}
			else {
				// On inclut la vue de l'éditeur
				include("views/forums/nouveau.php");
			}
		}
		else {
			msg("erreur", "Vous n'avez pas le droit de créer une nouvelle discussion.");
			redirect($_SERVER['HTTP_REFERER']);
		}
	}
	
	/**
	* Ajoute une nouvelle réponse
	**/
	public function repondre() {
		// On récupère les permissions et les infos du sujet pour récupérer le frm_id
		$f = $this->m->listeMessages();
		$p = $this->m->listerPermissions($_SESSION['groupe_id'], $f[0]['frm_id']);
		// Si on a le droit
		if ($p['repondre'] == 1) {
			// Si on a posté
			if (!empty($_POST)) {
				// On ajoute le message
				$m = $this->m->ajouterMessage(intval($_GET['id']));
				// Et le notre !
				msg("ok", "Votre message a bien été publié !");
				redirect("/forums/discussion/".$_GET['id'].':'.$_GET['blabla']);
			}
			else {
				$f = array();
				include("views/forums/repondre.php");
			}
		}
		else {
			msg("erreur", "Vous ne pouvez pas répondre à cette discussion.");
			redirect($_SERVER['HTTP_REFERER']);
		}
	}
	
	/**
	* Editer une réponse existante
	**/
	public function editer() {
		// On récupère les permissions et les infos du sujet pour récupérer le frm_id
		$f = $this->m->recupererMessage();
		$p = $this->m->listerPermissions($_SESSION['groupe_id'], $f[0]['frm_id']);
		// Si on a le droit
		if ($p['modifier'] == 1) {
			// Si on a posté
			if (!empty($_POST)) {
				// On édite le message
				$m = $this->m->editerMessage();
				// Et le notre !
				msg("ok", "Votre message a bien été éditée !");
				redirect("/forums/discussion/".$_GET['id'].':'.$_GET['blabla']);
			}
			else {
				include("views/forums/repondre.php");
			}
		}
		else {
			msg("erreur", "Vous ne pouvez pas éditer cette réponse.");
			redirect($_SERVER['HTTP_REFERER']);
		}
	}
	
	/**
	* Supprimer un message
	**/
	public function supprimer() {
		// On récupère les permissions et les infos du sujet pour récupérer le frm_id
		$f = $this->m->recupererMessage();
		$p = $this->m->listerPermissions($_SESSION['groupe_id'], $f[0]['frm_id']);
		// Si on a le droit
		if ($p['supprimer'] == 1) {
			// On supprime le msg
			$this->m->supprimerMessage();
			// Si c'est le dernier message du sujet, on l'efface aussi
			if ($f[0]['cnt'] == 1) {
				$this->m->supprimerSujet($f[0]['sjt_id']);
				msg("ok", "Ce sujet a bien été supprimé");
				redirect("/forums/");
			}
			else {
				msg("ok", "Ce message a bien été supprimé");
				redirect($_SERVER['HTTP_REFERER']);
			}
		}
		else {
			
		}
	}
	
	/**
	* Ajouter un nouveau forum
	**/
	public function ajouter() {
		// Si on a posté
		if (!empty($_POST)) {
			// On envoit tout au modèle
			$a = $this->m->nouveauForum();
			// Après on envoit les permissions (pattern : gid_perm) avec le frm_id
			$this->m->changerPermissions($a);
			msg("ok", "Votre nouveau forum est en place !");
			redirect("/forums/");
		}
		else {
			// On récupère les groupes pour les permissions
			$g = $this->m->listeGroupes();
			// On récupère les catégories parentes
			$c = $this->m->listeForums(1);
			// Qui a vu verra ! Vu ? :p
			include("views/forums/ajouter.php");
		}
	}
	
	
}
?>